LA DERIVADA DE UNA FUNCION
Luis Valero
I.E.S.Giner de los Rios

Clear[ff,a,b,p,dp,h,dh,dc,de1,de2];
ErrorBoxOptions->{AutoDelete->True};
dc:= 6/Abs[h];
dh:=Abs[h]/6;
de1:=.4(h-1)+.4;
de2:= (h-1)+1.8;
a:=-.6(h-1)-.3 ;
b:=4.8;
pmin:=-b+h;
pmax:=b-h;

dp:=Abs[pmax]/6; 

(* Rectas secantes y pendientes de las secantes  *)
pendiente[f_,p_,h_]:=(f[p+h]-f[p])/h;
hazPuntos[f_,p_,h_,dh_,dc_]:=Module[{m},Table[
{Hue[(dc*Abs[m])/(h/dh),1,.8],
PointSize[.02],Point[{p+m,f[p+m]}]},{m,dh/6,h,dh}   ] ];
hazSecantes[f_,p_,h_,dh_,dc_]:=Module[{m},Evaluate[Table[{
Hue[(dc*Abs[m])/(h/dh)],Thickness[.005],
Line[{   {p-(de1*m)/(Sqrt[m^2+(f[p+m]-f[p])^2]),
f[p]-(de1*(f[p+m]-f[p]))/(Sqrt[m^2+(f[p+m]-f[p])^2])},
{p+m+(de2*m)/(Sqrt[m^2+(f[p+m]-f[p])^2]),
f[p+m]+(de2*(f[p+m]-f[p]))/(Sqrt[m^2+(f[p+m]-f[p])^2])}   }]
},{m,dh/6,h,dh} ]  ]]; 
tangenteAngulo[f_,p_,b_,h_,dh_,dc_]:={
{White,PointSize[.02],Point[{p,f[p]}], Point[{p+dh/6,f[p+dh/6]}]},
Text[Style["P",12,Red],If[pendiente[f,p,dh/6]>0,
{p,f[p]-3/2dh/50},{p,f[p]-3/2dh/50}]],
Text[Style["Q",12,Red],If[pendiente[f,p,dh/6]>0,
{p+dh/6,f[p+dh/6]+dh/50},{p+dh/6,f[p+dh/6]-3/2dh/50}]],
Text[Style["R",12,Red],If[pendiente[f,p,dh/6]>0,
{p+dh/6,f[p]-3/2dh/50},{p+dh/6,f[p]+3/2dh/50}] ],
Text[Style["α",10,Bold,Red],
If[pendiente[f,p,(dh/6)]>0,
{p+dh/18,f[p]+dh/30*Sin[ ArcTan[pendiente[f,p,(dh/6)]]]},
{p,f[p]}  +dh/18*
{Cos[Pi/2+ ArcTan[pendiente[f,p,(dh/6)]]],
Sin[Pi/2+ ArcTan[pendiente[f,p,(dh/6)]]]}    ]  ],
{PointSize[0], Point[{p-dh/20,f[p]-dh/20}]},
{Thickness[.005],Dashed,White,
Line[{{p,f[p]},{p+dh/6+de2/100,f[p]}}],
Line[{{p+dh/6,f[p]},{p+dh/6,f[p+dh/6]}}]},
Hue[(dc*Abs[dh/6])/(h/dh)],Thickness[.005],
Line[{   {p-(de1/50*dh/6)/(Sqrt[(dh/6)^2+(f[p+dh/6]-f[p])^2]),
f[p]-(de1/50*(f[p+dh/6]-f[p]))/(Sqrt[(dh/6)^2+(f[p+dh/6]-f[p])^2])},
{p+dh/6+(de2/90*dh/6)/(Sqrt[(dh/6)^2+(f[p+dh/6]-f[p])^2]),
f[p+dh/6]+(de2/90*(f[p+dh/6]-f[p]))/(Sqrt[(dh/6)^2+(f[p+dh/6]-f[p])^2])}   }],
Thickness[.003],White,
Circle[{p,f[p]},Abs[h]/200,{0,If[pendiente[f,p,(dh/6)]>0,
 ArcTan[pendiente[f,p,(dh/6)]],Pi- ArcTan[-pendiente[f,p,(dh/6)]]   ]}]  };

(* Cinta de pendientes, derivada de la función *)
lineaPendientes[f_,b_,p_,h_,dh_,dc_]:={
{PointSize[0],Point[{-b+h-dh/2,pendiente[f,p,h]}],
Point[{b-h+dh/2,pendiente[f,p,h]}]},
Module[{m},Table[{  Hue[(dc*Abs[m])/(h/(dh))],
Thickness[.025],  Line[{  {p-Abs[dh]/6,pendiente[f,p,m]},
{p-Abs[dh]/6,pendiente[f,p,m]+dh/100}  }]   },{m,-dh/6,-h,-dh}  ]] ,  
Module[{m},Table[{  Hue[(dc*Abs[m])/(h/(dh))],
Thickness[.025], Line[{  {p+Abs[dh]/6,pendiente[f,p,m]},
{p+Abs[dh]/6,pendiente[f,p,m]+dh/100}  }]  },{m,dh/6,h,dh}  ]]  };
puntosCinta[f_,a_,b_,h_,dp_,dh_]:= Module[{i,j},
Flatten[Table[{i,pendiente[f,i,j]},{i,a,b,dp/6},{j,dh/6,h,dh/6}],1]];
directrizLinea[n_,h_,dh_]:=Module[{m},
Table[{ Hue[m/(Abs[h]/(Abs[dh]/6)),1,1],Thickness[.004],
Line[{ IntegerPart[n+m],IntegerPart[n+m+1]}]},
{m,1,IntegerPart[Abs[h]/(Abs[dh]/6)]-5  ,1}]];
directrizCinta[f_,a_,b_,h_,dp_,dh_]:= Module[{i},
Evaluate[Table[directrizLinea[i,h,dh], 
{i,0,IntegerPart[(b-a)/(dp/6)*h/(dh/6)]-5,h/(dh/6)   }]]];
cintaPendientes[f_,a_,b_,h_,dp_,dh_]:=
GraphicsComplex[puntosCinta[f,a,b,h,dp,dh],
{Thickness[.004],directrizCinta[f,a,b,h,dp,dh]}];

(* funciones *)
f:={(1/2#^2-4)&,(8/((#+5)))&,Log[#+5]&,4Sin[2#]&,Abs[#-1]&,
(((2#-1)^2)^(1/3)+1)&};
nombresFunciones:=
{"\!\(\*FractionBox[\(1\), \(\(\\ \)\(2\)\)]\) (x^2)-4"," (8/((x + 5)))"," ln(x+5)"," 4 sen(2x)"," |x-1|"," (2x-1)^(2/3)+1"};
functionButtons =Map[#[[1]]-> #[[2]]&,
Transpose[{Range[Length[nombresFunciones]],nombresFunciones}]];

(* Manipulate *)
Manipulate[
If[g=="secantes",Grid[{
{Show[{
Graphics[{PointSize[.02],White,Point[{p,f[[ff]][p]}]},
Background->GrayLevel[.05],
PlotLabel->Style["recta tangente a f en p",12,White],
AxesLabel->{Style["x"],Style["f(x)"]},
Axes->True,AxesStyle->White,
AspectRatio->1,ImagePadding->{{1,1},{10,26}},ImageSize->{160,160}],
Plot[f[[ff]][x],{x,-b-.1,b+.1},
PlotStyle->{White,Thickness[.004]},
Background->GrayLevel[.05]],
Plot[f[[ff]][p]+f[[ff]]'[p](x-p),{x,p-2,p+2},
PlotStyle->{Orange,Thickness[.01]},Background->GrayLevel[.05]]
  }]},
{Show[{
Graphics[{
PointSize[.02],White,Point[{p,f[[ff]][p]}],
Thickness[.003],
{Dashed,Line[{{p,0},{p,f[[ff]][p]}}]},
Text[Style["p",Bold,Italic,12],
If[f[[ff]][p]≤0,{p+dh/6,2dh},{p+dh/6,-dh}]],
hazPuntos[f[[ff]],p,-h,-dh,dc],
hazSecantes[f[[ff]],p,-h,-dh,dc]
},
PlotLabel->Style["rectas secantes  en p, p-h",14,White],
AxesLabel->{Style["x"],Style["f(x)"]},
Axes->True,AxesOrigin->{0,0},AxesStyle->White,
Background->GrayLevel[.05],
AspectRatio->1,ImagePadding->{{1,1},{10,26}},ImageSize->{280,280}],
Plot[f[[ff]][x],{x,p-h,p+h/2},PlotStyle->{White,Thickness[.004]}]  }]},
{Show[{
Graphics[{
PointSize[.02],White,Point[{p,f[[ff]][p]}],
Thickness[.003],
{Dashed,Line[{{p,0},{p,f[[ff]][p]}}]},
Text[Style["p",Bold,Italic,12],
If[f[[ff]][p]≤0,{p+dh/6,2dh},{p+dh/6,-dh}]],
hazPuntos[f[[ff]],p,h,dh,dc],
hazSecantes[f[[ff]],p,h,dh,dc]
},PlotLabel->Style["rectas secantes  en p, p+h",14,White],
AxesLabel->{Style["x"],Style["f(x)"]},
Axes->True,AxesOrigin->{0,0},AxesStyle->White,
Background->GrayLevel[.05],
AspectRatio->1,ImagePadding->{{1,1},{10,26}},ImageSize->{280,280}],
Plot[f[[ff]][x],{x,p-h/2,p+h},
PlotStyle->{White,Thickness[.004]}]  }]}  },Spacings->{0,1}],

Grid[{
{Show[{
Graphics[{},
PlotLabel->Style["funciones f , f'",White,12],
AxesLabel->{Style["x"],Style["f'(x)"]},
Axes->True,AxesStyle->White,AxesOrigin->{0,0},
Background->GrayLevel[.05],
AspectRatio->1,ImagePadding->{{1,1},{10,26}},ImageSize->{160,160}],
Plot[f[[ff]][x],{x,-b,b},PlotStyle->{Thickness[.005],Green}],
Plot[f[[ff]]'[x],{x,-b,b},PlotStyle->{Thickness[.008],Orange}]  }]},
{Show[{
Graphics[{cintaPendientes[f[[ff]],-b+h,b-h,-h,dp,-dh]},
PlotLabel->Style["banda de pendientes, h<0",White,14],
AxesLabel->{Style["x"],Style["tan((Subscript[α, h])(x))"]},
Axes->True,AxesOrigin->{0,0},AxesStyle->White,
Background->GrayLevel[.05],
ImagePadding->{{1,1},{10,26}},AspectRatio->.8,ImageSize->{280,280}],
Plot[f[[ff]]'[x],{x,-b+h,b-h},PlotStyle->{Thickness[.002],White}]  }]} ,
{Show[{
Graphics[{cintaPendientes[f[[ff]],-b+h,b-h,h,dp,dh]},
PlotLabel->Style["banda de pendientes, h>0",White,14],
AxesLabel->{Style["x"],Style["tan((Subscript[α, h])(x))"]},
Axes->True,AxesOrigin->{0,0},AxesStyle->White,
Background->GrayLevel[.05],
ImagePadding->{{1,1},{10,26}},AspectRatio->.8,ImageSize->{280,280}],
Plot[f[[ff]]'[x],{x,-b+h,b-h},PlotStyle->{Thickness[.002],White}]  }]} 
},Spacings->{0,1}]],

Delimiter,
Style["La Derivada de una Función",Bold,14],
Style["",14,Bold],
Style[" f '(p) = (lim_(h->0)) \!\(\*FractionBox[
RowBox[{
RowBox[{
StyleBox["f",
FontSlant->"Italic"], 
RowBox[{"(", 
RowBox[{
StyleBox["p",
FontSlant->"Italic"], "+", 
StyleBox["h",
FontSlant->"Italic"]}], ")"}]}], "-", 
RowBox[{"f", 
RowBox[{"(", 
StyleBox["p",
FontSlant->"Italic"], ")"}]}]}], 
StyleBox["h",
FontSlant->"Italic"]]\)", 16,Orange],
Delimiter,
Style["Función",12,Bold],
{{ff,1,"f(x) = "},functionButtons,ControlType->PopupMenu},
Style["",12,Bold],
Style["Resolución",12,Bold],
{{h,2.6,"(Subscript[h, tot]) = "},{.8,1.4,2,2.6}},
Delimiter,
{{p,.8,"p = "},-b+h ,b-h,.08},
Delimiter,
Style["Gráfico",12,Bold],
{{g,"secantes"},{"secantes","pendientes"}},
Style["",14,Bold],
Delimiter,
Dynamic[  If[g=="secantes",
Grid[{
{Style["α < (π/2),  tan(α) = (QR/PR) = \!\(\*FractionBox[\(f \((p + h)\) - \(\(f\) \((p)\)\(\\ \)\)\), \(h\)]\)",16,Red]},
{Style["α > (π/2),  tan(α) = - (QR/PR) = \!\(\*FractionBox[\(f \((p + h)\) - \(\(f\) \((p)\)\(\\ \)\)\), \(h\)]\)",16,Red]},
{Show[{
Graphics[
{tangenteAngulo[f[[ff]],p,b,h,dh,dc]},
Axes->True,AxesStyle->White,
Background->GrayLevel[.05],
AspectRatio->Automatic,ImageSize->{200,200},
PlotLabel->{Style["pendiente = tan(α)",White,12]},
AxesLabel->{Style[""],Style[" "]},
ImagePadding->{{20,10},{10,26}}]   }]},
{Style["pendiente de la recta secante con PR = ((Subscript[h, tot])/36)"   ,Bold,Black,10]},
{Style[
Row[{" tan(α) ",N[( f[[ff]][p+dh/6]-f[[ff]][p])/(dh/6),4]},"="]   ,Red,14]},
{Style["pendiente de la recta tangente"   ,Bold,Black,10]},
{Style[
Row[{ "tan((Subscript[α, t])) ",N[f[[ff]]'[p],4]}," = "]   ,Orange,14]}

},Spacings->{0,2}],
Grid[{
{Style["Secantes",12,Bold,Black]},
{Row[{Style["pendientes h<0",12,Bold,Black],
Style["pendientes h>0",12,Bold,Black]},Invisible["phan"]]},
{Row[{
Column[{
Style[
Row[{ "tan((Subscript[α, 1]))",N[pendiente[f[[ff]],p,-dh/6],{Infinity,3}] }," = "], 
Hue[(dc*Abs[dh/6])/(h/(dh)),1,.8],Bold,10],
Style[
Row[{ "tan((Subscript[α, 2]))",N[pendiente[f[[ff]],p,-dh/6-dh] ,{Infinity,3}]}," = "], 
Hue[(dc*Abs[dh/6+dh])/(h/(dh)),1,.7],Bold,10],
Style[
Row[{ "tan((Subscript[α, 3]))",N[pendiente[f[[ff]],p,-dh/6-2dh],{Infinity,3}] }," = "], 
Hue[(dc*Abs[dh/6+2dh])/(h/(dh)),1,.8],Bold,10],
Style[
Row[{ "tan((Subscript[α, 4]))",N[pendiente[f[[ff]],p,-dh/6-3dh],{Infinity,3}] }," = "], 
Hue[(dc*Abs[dh/6+3dh])/(h/(dh)),1,.8],Bold,10],
Style[
Row[{ "tan((Subscript[α, 5]))",pendiente[f[[ff]],p,-dh/6-4dh] }," = "], 
Hue[(dc*Abs[dh/6+4dh])/(h/(dh)),1,.8],Bold,10],
Style[
Row[{ "tan((Subscript[α, 6]))",pendiente[f[[ff]],p,-dh/6-5dh] }," = "], 
Hue[(dc*Abs[dh/6+5dh])/(h/(dh)),1,.8],Bold,10]
},Left],
Column[{
Style[
Row[{ "tan((Subscript[α, 1]))",pendiente[f[[ff]],p,dh/6] }," = "], 
Hue[(dc*Abs[dh/6])/(h/(dh)),1,.8],Bold,10],
Style[
Row[{ "tan((Subscript[α, 2]))",pendiente[f[[ff]],p,dh/6+dh] }," = "], 
Hue[(dc*Abs[dh/6+dh])/(h/(dh)),1,.7],Bold,10],
Style[
Row[{ "tan((Subscript[α, 3]))",pendiente[f[[ff]],p,dh/6+2dh] }," = "], 
Hue[(dc*Abs[dh/6+2dh])/(h/(dh)),1,.8],Bold,10],
Style[
Row[{ "tan((Subscript[α, 4]))",pendiente[f[[ff]],p,dh/6+3dh] }," = "], 
Hue[(dc*Abs[dh/6+3dh])/(h/(dh)),1,.8],Bold,10],
Style[
Row[{ "tan((Subscript[α, 5]))",pendiente[f[[ff]],p,dh/6+4dh] }," = "], 
Hue[(dc*Abs[dh/6+4dh])/(h/(dh)),1,.8],Bold,10],
Style[
Row[{ "tan((Subscript[α, 6]))",pendiente[f[[ff]],p,dh/6+5dh] }," = "], 
Hue[(dc*Abs[dh/6+5dh])/(h/(dh)),1,.8],Bold,10]
},Left]
},Invisible["ph"]]},

{Show[{
Graphics[{lineaPendientes[f[[ff]],b,p,h,dh,dc]},
Axes->True,AxesStyle->White,
Background->GrayLevel[.05],
AspectRatio->1,ImageSize->{200,200},
AxesLabel->{Style["p"],Style["tan((Subscript[α, i]))",12]},
ImagePadding->{{2,16},{10,26}}]   }]  },
{Row[
{Style["Función :",12,Bold,Black],
Style[ Row[{Row[{"p",p},"="] , Row[{"f(p)",f[[ff]][p]},"="]}," ; "  ] ,Black,Bold,12]
},Invisible["ph"] ]},
{Row[
{Style["Derivada :",12,Bold,Black],
Style[ Row[{Row[{"p",N[p,{Infinity,3}]},"="] , Row[{"f '(p)",N[f[[ff]]'[p],{Infinity,3}]},"="]}," ; "  ] ,Orange,Bold,12]
},Invisible["ph"] ]}

},Spacings->{10,2}]
   ]
],SaveDefinitions->True,ControlPlacement->Left]

a)  La recta tangente en un punto  (p ,  f (p))  a la representación gráfica de una función  f , se puede obtener como límite de la recta secante por los puntos (p ,  f (p))  y  (p+h ,  f (p+h)),  cuando la distancia  h  entre sus abscisas tiende a cero. 

b)  Esencialmente ésto es debido a que la representación gráfica de una función que tiene recta tangente en el punto p es suficientemente recta, en un entorno del punto de tangencia, si el radio de éste es suficientemente pequeño. 

c)  Entonces, sobre entornos suficientemente pequeños del punto  p, las gráficas de funciones que tienen tangente en p sólo se diferencian en la segunda coordenada del punto de tangencia,  f(p),  y en su inclinación. 

d)  Para determinar la recta tangente, únicamente hace falta calcular esta  inclinación, o lo que es lo mismo, su pendiente, que es el valor de la tangente trigonómetrica del ángulo α que forma la gráfica con el eje de abscisas.

e)   Esta pendiente,   f ' (p),  es la que se obtiene como límite, cuando h tiende a cero, de la pendiente de la recta secante que pasa por los puntos  (p ,  f (p)) y  (p+h ,  f (p+h)) .

f)  Representando, para cada  p, los valores de las pendientes de rectas secantes en p con distintos valores de h, se obtiene una banda de gráficas que, cuando el valor máximo de  h es suficientemente pequeño, debido a la rectitud de la gráfica de la función en el entorno de p, tienen comportamientos de monotonía y concavidad próximos. 

g)   Además, siendo el valor máximo de h suficientemente pequeño, los valores de las pendientes con h > 0 y con h < 0 tienden a aproximarse. Tanto más cuanto menor es el valor de h. 
3
h)  Se denomina derivada de  f a la función que tiene, para cada p,  el valor  f ' (p) como imagen. Su gráfica es la curva límite de la gráfica de las pendientes de la rectas secantes en los distintos puntos, cuando la distancia entre las abscisas de los dos puntos de corte de cada secante tienden a 0.

luis.valero@mac.com